﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using Policlinica;

namespace WcfServiceLibraryDoctory
{
    [ServiceContract]
    public interface IRegistryBusinessApplication
    {
        ///получение списка пациентов
        [OperationContract]
        List<Patient> GetAllPatients();

        //получение пациента по идентификатору
        [OperationContract]
        Patient GetPatientById(int id);

        //получение пациента по номеру полиса
        [OperationContract]
        List<Patient> GetPatientByPolisNumber(string series, string polisNumber);

        //сохранение пациента
        [OperationContract]
        Patient SavePatient(Patient patient);

        //обновление пациента
        [OperationContract]
        Patient UpdatePatient(Patient patient);

        //получение списка врачей
        [OperationContract]
        List<Doctor> GetAllDoctors();

        //получение врача по идентификатору
        [OperationContract]
        Doctor GetDoctorById(int id);

        //получение списка врачей определенной специализации
        [OperationContract]
        List<Doctor> GetDoctorsBySpecialisation(string specialisation);

        //получение списка услуг
        [OperationContract]
        List<MedService> GetAllMedServices();

        //получение услуги по идентификатору
        [OperationContract]
        MedService GetMedServiceById(int id);

        //получение списка флюорографий по идентификатору пациента
        [OperationContract]
        List<KKF> GetKKFByPatientId(int patientId);

        //сохранить флюорографию
        [OperationContract]
        KKF SaveKKF(KKF kkf);

        //выдать талон
        [OperationContract]
        Ticket SaveTicket(Ticket ticket);

        //получить страховой полис по идентификатору
        [OperationContract]
        InsurancePolis GetInsurancePolisById(int id);

        //сохранить страховой полис
        [OperationContract]
        InsurancePolis SaveInsurancePolis(InsurancePolis polis);

        //сохранить страховую компанию
        [OperationContract]
        InsuranceOrganization SaveInsuranceOrganisation(InsuranceOrganization org);

        //получение списка всех страховых компаний
        [OperationContract]
        List<InsuranceOrganization> GetAllInsuranceOrganizations();

        //получение пациентов по фамилии
        [OperationContract]
        List<Patient> GetPatientsBySurname(string surname);

        //Получение списка прививок определенного пациента
        [OperationContract]
        List<Vaccina> GetVaccinaByPatientId(int patientId);

        //сохранить прививку
        [OperationContract]
        Vaccina SaveVaccina(Vaccina vaccina);

        //Получение списка талонов на прием к определенному доктору
        [OperationContract]
        List<Ticket> GetTicketsByDoctor(Doctor doctor);

        [OperationContract]
        bool IsNewTickedAdded(Doctor doctor);
    }
}
